package com.example.web.service;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;

import org.springframework.stereotype.Service;

import com.example.project.utils.DateUtils;

/**
 * RuoYi首创 html调用 thymeleaf 实现字典读取
 * 
 * @author ruoyi
 */
@Service("tool")
public class ToolService {

	public String dateFormate(Date date) {
		if (date == null) {
			return "";
		}
		String format = "yyyy-MM-dd";
		String fdate = DateUtils.parseDateToStr(format, date);
		return fdate;
	}

	public String getLocalDate(LocalDateTime localDateTime) {
		if (localDateTime == null) {
			return "";
		}
		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
		return localDateTime.format(formatter);
	}

	/**
	 * 将LocalDateTime格式化为yyyy-MM-dd字符串
	 * @param localDateTime LocalDateTime对象
	 * @return 格式化后的日期字符串
	 */
	public String formatLocalDateTime(LocalDateTime localDateTime) {
		if (localDateTime == null) {
			return "";
		}
		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
		return localDateTime.format(formatter);
	}

	/**
	 * 将Date格式化为yyyy-MM-dd字符串
	 * @param date Date对象
	 * @return 格式化后的日期字符串
	 */
	public String formatDateToYMD(Date date) {
		if (date == null) {
			return "";
		}
		return DateUtils.parseDateToStr("yyyy-MM-dd", date);
	}

	/**
	 * 检查任务是否超时未处理
	 * @param dueDate 截止日期
	 * @param statusId 状态ID
	 * @return true表示超时未处理，false表示正常
	 */
	public boolean isOverdueAndUnresolved(java.time.LocalDate dueDate, Long statusId) {
		if (dueDate == null || statusId == null) {
			return false;
		}
		
		java.time.LocalDate now = java.time.LocalDate.now();
		// 检查是否超时（截止日期已过）且状态不是已解决或已关闭
		boolean isOverdue = dueDate.isBefore(now);
		boolean isResolved = statusId == 4 || statusId == 6; // 4=已解决, 6=已关闭
		
		return isOverdue && !isResolved;
	}

	/**
	 * 计算延期天数
	 * @param dueDate 截止日期
	 * @return 延期天数
	 */
	public int getOverdueDays(java.time.LocalDate dueDate) {
		if (dueDate == null) {
			return 0;
		}
		
		java.time.LocalDate now = java.time.LocalDate.now();
		// 计算两个日期之间的天数差
		long daysDiff = java.time.temporal.ChronoUnit.DAYS.between(dueDate, now);
		return (int) Math.max(0, daysDiff);
	}

	/**
	 * 判断文件是否为图片文件
	 * @param filename 文件名
	 * @return true表示是图片文件，false表示不是
	 */
	public boolean isImageFile(String filename) {
		if (filename == null || filename.trim().isEmpty()) {
			return false;
		}
		
		String lowerCaseFilename = filename.toLowerCase().trim();
		
		// 常见的图片文件扩展名
		String[] imageExtensions = {
			".jpg", ".jpeg", ".png", ".gif", ".bmp", ".webp", ".svg", ".ico", ".tiff", ".tif"
		};
		
		for (String ext : imageExtensions) {
			if (lowerCaseFilename.endsWith(ext)) {
				return true;
			}
		}
		
		return false;
	}
}
